我想用一个变量说:
i=1
Run Code Online (Sandbox Code Playgroud)
作为引用传递给脚本的位置变量的值,例如:
x=101
y=201
z=301
foo(){
echo "$1"
echo "$2"
echo "$3"
}
foo x y z
Run Code Online (Sandbox Code Playgroud)
输出:
101
201
301
Run Code Online (Sandbox Code Playgroud)
不是通过索引引用每个参数,我如何使用i作为索引变量递增?
澄清:
foo() {
local i=1
echo "$i" #echo first paramter
(( i+=1 ))
echo "$i" #echo second parameter
#etc.
}
Run Code Online (Sandbox Code Playgroud)
该echo "$i"部分的语法是什么?
@Eric回答后更新
~$ t=5
~$ foo() { i=1; echo "${!i}"; }
~$ foo t
t
~$
Run Code Online (Sandbox Code Playgroud)
更新 #2
简而言之,我可以使我的方法起作用的唯一方法是:
foo() { #assuming 3 parameters
i=0
(( i+=1 ))
var="${!i}"
echo "${!var}"
(( …Run Code Online (Sandbox Code Playgroud) 大家好
目的:检查文件中是否存在字符串并相应地运行操作
if [ -z 'sudo cat /etc/sudoers | grep "$USER ALL=(ALL) NOPASSWD:ALL"' ]; echo "no output, cont." || echo "line exists, skipping"
Run Code Online (Sandbox Code Playgroud)
在行存在和不存在的情况下,输出始终显示“行存在,跳过”。
将输出添加到变量中,例如 x,用变量替换 if 语句中的行会产生正确的输出,
如何“跳过”可变路由并直接运行命令?