'while [ "$1" != "" ]
do
case "$1" in
-a) AUTO=1; shift;;
-A) AUTO=1; AUTOIGNORE=1; shift;;
-E) EXCLUDE=$2; shift 2;;
-o) NOAUTOIGNORE=1; shift;;
--help) print_help; exit $STATE_OK;;
-h) print_help; exit $STATE_OK;;
-m) MTAB=$2; shift 2;;
-f) FSTAB=$2; shift 2;;
-N) FSF=$2; shift 2;;
-M) MF=$2; shift 2;;
-O) OF=$2; shift 2;;
-T) TIME_TILL_STALE=$2; shift 2;;
-i) IGNOREFSTAB=1; shift;;
-w) WRITETEST=1; shift;;
-L) LINKOK=1; shift;;
-e) DFARGS=$2; shift 2;;
/*) MPS="${MPS} $1"; shift;;
*) usage; exit $STATE_UNKNOWN;;
esac'
有人可以解释一下while循环是做什么的吗?这些变量表示什么,这里的移位是什么意思?
答案 0 :(得分:0)
以DEBUG模式执行脚本。 示例:./bash -x NameOFScript.sh或./bash -x NameOFScript.sh参数...
显示的代码段,WHILE循环,CASE语句用法在那里。
答案 1 :(得分:-1)
此代码段分析传递给脚本的参数,并设置一些变量。参数包含在$ 1 $ 2之类的变量中。
使用循环,将扫描所有参数。在循环内,仅检查$ 1(通过case命令),然后使用“ shift”命令移动参数,删除第一个参数($ 1)。转移后,先前的$ 1丢失了,新的$ 1包含了先前$ 2包含的内容。
请注意,某些参数(例如“ -E”)必须后跟另一个参数。在这种情况下,如果检测到“ -E”为$ 1,则还会使用$ 2,并再进行一次移位。
通过在循环的末尾添加一个班次,并删除每种情况下指定的许多内容,此片段可能会更加简洁。
答案 2 :(得分:-2)
正在读取输入$ 1是注释后的下一部分,例如
ls -l
您有$ 1 =“-l”。
,如果您有$1
,$2
和$3
,则shift转换变量,然后通过转换使$2
成为新的$1
和{{ 1}}使shift 2
成为新的$3
。