要将命令的输出存储为sh/ksh/bash中的变量,您可以执行任一操作
var=$(command)
Run Code Online (Sandbox Code Playgroud)
要么
var=`command`
Run Code Online (Sandbox Code Playgroud)
两种方法之间有什么区别?
我正在阅读bash示例,if但有些示例是用单个方括号编写的:
if [ -f $param ]
then
#...
fi
Run Code Online (Sandbox Code Playgroud)
其他双方括号:
if [[ $? -ne 0 ]]
then
start looking for errors in yourlog
fi
Run Code Online (Sandbox Code Playgroud)
有什么不同?
有可能做这样的事情:
start=1
end=10
echo {$start..$end}
# Ouput: {1..10}
# Expected: 1 2 3 ... 10 (echo {1..10})
Run Code Online (Sandbox Code Playgroud) 如何在bash for循环中使用变量?如果我只是使用标准for循环,它会做我期望的
for i in {0..3}
do
echo "do some stuff $i"
done
Run Code Online (Sandbox Code Playgroud)
这很好用.它循环4次,0到3次,打印我的消息并将计数结束.
do some stuff 0
do some stuff 1
do some stuff 2
do some stuff 3
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下for循环时,它似乎等于一个字符串,这不是我想要的.
length=3
for i in {0..$length}
do
echo "do something right $i"
done
Run Code Online (Sandbox Code Playgroud)
输出:
do something right {0..3}
Run Code Online (Sandbox Code Playgroud)
我试过了
for i in {0.."$length"} and for i in {0..${length}} (both output was {0..3})
Run Code Online (Sandbox Code Playgroud)
和
for i in {0..'$length'} (output was {0..$length})
Run Code Online (Sandbox Code Playgroud)
他们都不做我需要的事.希望有人可以帮助我.在此先感谢任何bash专家对for循环的帮助.
我在.sh文件中有以下代码:
for num in {1..10}
do
echo $num
done
Run Code Online (Sandbox Code Playgroud)
哪个应该从1到10打印数字.但是,这是我得到的:
{1..10}
Run Code Online (Sandbox Code Playgroud)
此外,使用类似C的sytax也不起作用:
for ((i=1; i<=10; i++))
Run Code Online (Sandbox Code Playgroud)
这给我一个错误:
Syntax error: Bad for loop variable
Run Code Online (Sandbox Code Playgroud)
我拥有的bash版本是4.2.25.
如何在ksh中使用for循环遍历一个简单的整数范围?
例如,我的脚本目前正在执行此操作...
for i in 1 2 3 4 5 6 7
do
#stuff
done
Run Code Online (Sandbox Code Playgroud)
...但是我想将范围扩展到7以上.有更好的语法吗?
#!/bin/sh
for i in {1..5}
do
echo "Welcome"
done
Run Code Online (Sandbox Code Playgroud)
会工作,显示欢迎5次.
#!/bin/sh
howmany=`grep -c $1 /root/file`
for i in {1..$howmany}
do
echo "Welcome"
done
Run Code Online (Sandbox Code Playgroud)
Doesn't work! howmany would equal 5 as that is what the output of grep -c would display. $1 is parameter 1 which is specific when running the script.
Any ideas?
我经常使用众所周知的语法在bash中编写for循环:
for i in {1..10} [...]
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试编写一个顶部由变量定义的地方:
TOP=10
for i in {1..$TOP} [...]
Run Code Online (Sandbox Code Playgroud)
我尝试了各种各样的parens,花括号,评估等,并且通常会收到错误的"错误替换".
如何编写for-loop以使限制取决于变量而不是硬编码值?
任何人都可以解释我如何在bash for循环中使用变量名来生成一系列数字?
for year in {1990..1997}
do
echo ${year}
done
Run Code Online (Sandbox Code Playgroud)
结果:
1990 1991 1992 1993 1994 1995 1996 1997
然而
year_start=1990
year_end=1997
for year in {${year_start}..${year_end}}
do
echo ${year}
done
Run Code Online (Sandbox Code Playgroud)
结果:
{} 1990..1997
如何让第二种情况起作用?否则我必须写一些乏味的循环.非常感谢.
注意:我不是在问这个问题
我查找了有关如何循环一系列不连续数字(如0,1,2,4,5,6,7,9,11)的信息,而无需手动输入数字并仍然使用范围.
显而易见的方法是这样做:
for i in 0 1 2 4 5 6 7 9 11; do echo $i; done
Run Code Online (Sandbox Code Playgroud)