linux - 取消设置参数变量

标签 linux shell unix sh

我在 sh shell 中创建了一个脚本。

#script.sh
echo $1

if [ x$1 = 'x' ]
then
 echo CODE1
else
 echo CODE2
fi

1) 如果我使用 运行它。 ./script.sh

OUTPUT: CODE1 

2)如果我像一样运行它。 ./script.sh arg1

OUTPUT: arg1
CODE2

3)如果我在使用后再次运行它。 ./script.sh 然后它给了我

OUTPUT: arg1
CODE2

我认为第 3 个输出与第 2 个输出相同,因为我在与第 2 个相同的 shell 中运行第 3 个,所以 $1 没有被释放,第 3 个实际上使用的是第 2 个设置的 $1 的值。

但是如果我使用 unset 1 取消分配它,那么 shell 会给出未知的 identifire 错误。

如何解除分配此环境变量 $1 ? 或者 如何将其设置为 null。

最佳答案

通过使用 . 获取 shell,您可以在当前 shell 的上下文中运行它。如果您不这样做,这些问题都不会发生:

$ ./script.sh 

CODE1
$ ./script.sh arg1
arg1
CODE2
$ ./script.sh

CODE1

关于linux - 取消设置参数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079578/

相关文章:

linux - Linux (Ubuntu) 中的监视器详细信息

linux - 无法使用 Linux date 命令设置年份

linux - 在查找和处理管道时打印文件名

linux - 与子shell命令交互时如何使ctrl + c取消整个命令?

c - 使用管道将整数从 n 个子级发送到父级 (c/unix)

shell - 如何在不关闭运行脚本的ssh/telnet session 的情况下退出shell脚本

linux - MongoDB 进程每天都在关闭。如何在服务器中永远运行 mongod?

linux - crontab 将转储数据发送到 Windows 机器

linux - 这在 bash 脚本 : "if ! "$a"function "$b" $$ ; then"中是什么意思

linux - 在函数中创建一个目录,然后将路径作为字符串返回给 Bash 中的调用者