小编Cyb*_*beX的帖子

bash - 使用变量 int 值来引用函数中的位置参数

我想用一个变量说:

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)

shell bash shell-script

3
推荐指数
1
解决办法
3218
查看次数

使用 cat 检查文件中是否存在字符串 | 格雷普

大家好

目的:检查文件中是否存在字符串并相应地运行操作

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 语句中的行会产生正确的输出,

如何“跳过”可变路由并直接运行命令?

grep scripting shell-script variable

0
推荐指数
1
解决办法
2万
查看次数

标签 统计

shell-script ×2

bash ×1

grep ×1

scripting ×1

shell ×1

variable ×1