别再折腾Vagrant了!用VirtualBox直接导入P4学习镜像(Ubuntu 16/20)的保姆级教程
2026/4/28 11:25:26
在编写Shell脚本时,新手常常会遇到各种问题,这些问题可能会导致脚本无法正常运行。下面将介绍一些常见的错误及其解决方法。
在脚本编写中,有时会尝试在子脚本中改变导出的环境变量并期望影响父脚本,但这是不可行的。因为导出的环境变量是单向通信的,在Linux或Unix子进程调用时被传递,没有机制将这些变量的值传回父进程。
解决方法是重新构建脚本结构,避免这种传递需求。可以通过显式地在第二个脚本中输出结果,让第一个脚本使用$( )操作符(或旧版Shell的反引号)来调用第二个脚本。例如:
# 第一个脚本中 VAL=$(./second.sh) # 第二个脚本 second.sh printf "%b" "in second\n" >&2 printf "initially VAL=%d\n" $VAL >&2 VAL=12 printf "changed so VAL=%d\n" $VAL >&2 echo $VAL当脚本为变量赋值时,如果忘记在赋值语句的右侧加引号,可能会出现“command not found”错误。例如:
#!/bin/bash - OPT1=-l OPT2=-h ALLOPT=$OPT1 $OPT2 ls