在bash shell 脚本中,用$来获取变量值时,有一些不加双引号,例如$arg。有一些会加双引号,例如"$arg"。 下面具体说明这两种形式之间的区别,什么情况下要加双引号,什么情况可以不加双引号。 在bash 中,各个参数之间默认用隔开。 当参数值本身就带有空格时,如果不加双引号把参数值括起来,那么这个参数值可能会被扩...
/bin/bash for arg in "$*"; do echo "***:" $arg done echo --- for arg in "$@"; do echo "@@@:" $arg done 这个脚本分别遍历 "$*" 和 "$@" 扩展后的内容,并打印出来。执行 ./testparams.sh,结果如下: $ ./testparams.sh This is a test ***: This is a test --- @@@: ...
/bin/bash for arg in "$*"; do echo "***:" $arg done echo --- for arg in "$@"; do echo "@@@:" $arg done 这个脚本分别遍历 "$*" 和 "$@" 扩展后的内容,并打印出来。执行 ./testparams.sh,结果如下: $ ./testparams.sh This is a test ***: This is a test --- @@@: ...
/bin/bash for arg in "$*"; do echo "***:" $arg done echo --- for arg in "$@"; do echo "@@@:" $arg done 1. 2. 3. 4. 5. 6. 7. 8. 9. 这个脚本分别遍历 "$*" 和 "$@" 扩展后的内容,并打印出来。执行 ./testparams.sh,结果如下: $ ./testparams.sh This is a test...
echo "@@@:" $arg done 这个脚本分别遍历"$*"和"$@"扩展后的内容,并打印出来。 执行./testparams.sh脚本,结果如下: $ ./testparams.sh This is a test ***: This is a test --- @@@: This @@@: is @@@: a @@@: test 可以看到,"$*...
if["$1"='node'];thenSCRIPT_FILE=forARGin"$@"doif["${ARG}"='main.js'];thenSCRIPT_FILE='main.js'breakfidoneif[ -z"$SCRIPT_FILE"];thenexec"$@""main.js"exit0;fifiexec"$@" 这是在常见 nodejs 的 docker 镜像时经常使用的一段代码: ...
"arg3" 使用场景 当你需要将所有参数作为一个整体处理时,使用"${*}"。 当你需要分别处理每个参数,尤其是参数中包含空格或需要精确控制每个参数时,使用"${@}"。 了解这两者之间的区别对于编写更健壮、更灵活的 Bash 脚本至关重要,尤其是在处理复杂的参数和输入数据时。
在上述代码中,"$@"用于表示所有命令行参数,for arg in "$@"语句用于遍历每个参数,并将其赋值给变量arg。在循环体中,可以根据具体需求对每个参数进行相应的处理,比如输出参数内容、调用其他函数等。 循环遍历bash中的参数常用于处理需要对不同参数进行不同操作的场景,例如根据参数执行不同的逻辑、参数验证、参数解析...
Bash printf 列中 arg 中的多行 noo*_*lag 4 bash printf 我已经摆弄这个好几个小时了,但无法让它工作,所以也许我的方法是错误的。我想漂亮地显示消息的多行,因此“标题”位于左侧,然后消息与列中的消息对齐,例如,如下所示:WARNING: The quick brown fox jumped over the lazy dog. Sphinx of black quartz...
再举一个强调引号重要性的例子:请注意,在 "arg" 与数字之间有 2 个空格,但如果我不对 $word 加引号的话: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 $forwordin"$@";doecho $word;done arg1arg2arg3 在bash 中,"$@" 是要遍历的“默认”列表: ...