当变量给出范围时,如何在Bash中迭代一系列数字?
我知道我可以这样做(在Bash 文档中称为"序列表达式" ):
for i in {1..5}; do echo $i; done
Run Code Online (Sandbox Code Playgroud)
这使:
1
2
3
4
5
但是,如何用变量替换任何一个范围端点?这不起作用:
END=5
for i in {1..$END}; do echo $i; done
Run Code Online (Sandbox Code Playgroud)
哪个印刷品:
{} 1..5
我正在处理源代码中的回归.我想告诉Git:"根据参数化日期/时间检查来源".这可能吗?
我也在目前的观点中进行了改变,我不想失去.理想情况下,我想在当前源和我之前根据之前的日期感兴趣的某些版本之间来回切换.
将单个远程分支作为本地分支进行跟踪非常简单.
$ git checkout --track -b ${branch_name} origin/${branch_name}
Run Code Online (Sandbox Code Playgroud)
将所有本地分支推送到远程,根据需要创建新的远程分支也很容易.
$ git push --all origin
Run Code Online (Sandbox Code Playgroud)
我想反过来.如果我在一个源上有X个远程分支:
$ git branch -r
branch1
branch2
branch3
.
.
.
Run Code Online (Sandbox Code Playgroud)
我是否可以为所有远程分支创建本地跟踪分支,而无需手动创建每个分支?说出类似的话:
$ git checkout --track -b --all origin
Run Code Online (Sandbox Code Playgroud)
我用google搜索和RTM,但到目前为止已经上传了.
在bash中执行命令替换的首选方法是什么?
我总是这样做:
echo "Hello, `whoami`."
Run Code Online (Sandbox Code Playgroud)
但最近,我经常看到它写得像这样:
echo "Hello, $(whoami)."
Run Code Online (Sandbox Code Playgroud)
什么是首选语法,为什么?或者他们几乎可以互换?
我倾向于赞成第一个,因为我的文本编辑器似乎知道它是什么,并且适当地进行语法高亮.
我在这里读到,在每种情况下,转义字符的行为都有所不同,但我不清楚哪种行为更可取,或者它只取决于具体情况.
附带问题:在一个脚本中使用两个表单是不好的做法,例如嵌套命令替换时?
有两种方法可以捕获命令行的输出bash
:
Legacy Bourne shell反手``
:
var=`command`
Run Code Online (Sandbox Code Playgroud)$()
语法(据我所知,特定于Bash,或至少不受原始Bourne等非POSIX旧shell支持)
var=$(command)
Run Code Online (Sandbox Code Playgroud)与反引号相比,使用第二种语法有什么好处吗?或两者完全相同?
我需要从远程仓库中删除旧的和未维护的分支.我正试图找到一种方法来列出他们上次修改日期的远程分支,但我不能.
有人知道以这种方式列出远程分支的简单方法吗?
如何在不ping某些网站的情况下测试互联网连接?我的意思是,如果有连接但网站已关闭怎么办?有检查与世界的联系吗?
我正在从bash脚本创建临时文件.我在处理结束时删除它们,但由于脚本运行了很长时间,如果我在运行期间将其删除或只是CTRL-C,则不会删除临时文件.
有没有办法在执行结束之前捕获这些事件并清理文件?
此外,这些临时文件的命名和位置是否有某种最佳实践?
我目前不确定使用:
TMP1=`mktemp -p /tmp`
TMP2=`mktemp -p /tmp`
...
Run Code Online (Sandbox Code Playgroud)
和
TMP1=/tmp/`basename $0`1.$$
TMP2=/tmp/`basename $0`2.$$
...
Run Code Online (Sandbox Code Playgroud)
或者是否有更好的解决方案?
要为文件夹中的所有音乐创建播放列表,我在bash中使用以下命令:
ls > list.txt
Run Code Online (Sandbox Code Playgroud)
我想使用pwd(打印工作目录)命令的结果作为播放列表的名称.
就像是:
ls > ${pwd}.txt
Run Code Online (Sandbox Code Playgroud)
这不起作用 - 任何人都可以告诉我我需要用什么语法来做这样的事情?
编辑:正如评论中所提到的,pwd最终会给出一个绝对路径,所以我的播放列表最终会在某个目录中被命名为.txt - d'oh!所以我必须修剪路径.感谢您发现 - 我可能花了很多年的时间想知道我的文件去了哪里!
我在bash脚本中看到两种不同的形式,它们似乎也是一样的:
`some command`
Run Code Online (Sandbox Code Playgroud)
和
$(some command)
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别,什么时候应该使用它们?
bash ×6
git ×3
backticks ×2
branch ×2
shell ×2
syntax ×2
command ×1
command-line ×1
connection ×1
exit ×1
for-loop ×1
git-checkout ×1
maintenance ×1
ping ×1
sh ×1
substitution ×1