在shell脚本

时间:2016-06-02 09:24:29

标签: shell alias ksh

我正在使用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的形式出现? 我怎么解决这个问题?

2 个答案:

答案 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命令