请看一下这个代码示例:
MIN=10
if [ -n "$1" ]; then echo "$1"; fi
if [ -n "$2" ]; then echo "$2"; fi
if [ -n "$3" ]; then echo "$3"; fi
if [ -n "$4" ]; then echo "$4"; fi
if [ -n "$5" ]; then echo "$5"; fi
if [ -n "$6" ]; then echo "$6"; fi
if [ -n "$7" ]; then echo "$7"; fi
if [ -n "$8" ]; then echo "$8"; fi
if [ -n "$9" ]; then echo "$9"; fi
if [ -n "${10}" ]; then echo "${10}"; fi
echo "List of arguments: "$*""
echo "Name of this script: "$0""
if [ $# -lt "$MIN" ]; then echo "Not enough arguments, need $MIN to run."; fi
例如,终端输出$./new.sh q w e r t y u i o p
将是:
q
w
e
r
t
y
u
i
o
p
List of arguments: q w e r t y u i o p
Name of this script: ./new.sh
的输出$./new.sh q w e r t y u i o
将是:
q
w
e
r
t
y
u
i
o
List of arguments: q w e r t y u i o
Name of this script: ./new.sh
Not enough arguments, need 10 to run.
问题: 是什么-n
意思?
答案1
[
是内置函数的另一个名称test
,请参阅这里和这里, 还这。
该语句序列if
作为循环可能会更好。在 Bash 中我们可以使用间接扩展:
for ((i=1 ; i <= 10 ; i++)) ; do
if [ -n "${!i}" ] ; then
echo "${!i}"
fi
done
更常见的习惯用法可能是shift
在每次迭代中使用,但它会破坏参数列表。
另外,引用:这里$0
在引号之外。在大多数情况下,将所有变量扩展保留在引号内更有用,除非您明确想要分词和文件名扩展。
echo "Name of this script: "$0""
所以,不如写:
echo "Name of this script: $0"