我正在使用ksh shell。我必须从定义的别名中获取信息,我使用下面的代码
#!/usr/bin/ksh
source ~/.profile
echo "parameter : $1"
alias | grep hello
我已将上述脚本保存为test.sh 或运行test.sh,我得到低于输出:
./test 324
parameter : autologout
hello='Hello, How are you'
我的问题是,当我作为参数传递324时,为什么autologout将以$1
的形式出现?
我怎么解决这个问题?
答案 0 :(得分:2)
您可以在执行$1
之前保存参数source
,这可能会改变您的位置参数
#!/usr/bin/ksh
arg1="$1"
source ~/.profile
echo "parameter : $arg1"
alias | grep hello
答案 1 :(得分:2)
确保您的〜/ .profile中没有set
命令。
#!/usr/bin/ksh
source ~/.profile
set "new"
echo "parameter : $1"
alias | grep hello
>./script.ksh foo
parameter : new
现在您的参数将始终为" new"。
请尝试注释掉source
命令,看看错误是否仍然存在。如果是,则在"〜/ .profile"
set
命令