我正在编写一个csh别名,以便我可以在csh中使用以下bash函数:
function up( )
{
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
P=$P/..
done
cd $P
export MPWD=$P
}
(我从here偷走了上面的bash函数)
我写了这个:
alias up 'set LIMIT=$1; set P=$PWD; set counter = LIMIT; while[counter!=0] set counter = counter-1; P=$P/.. ; end cd $P; setenv MPWD=$P'
但是,我收到以下错误:
while[counter!=0]: No match.
P=/net/devstorage/home/rghosh/..: Command not found.
end: Too many arguments.
我的脚本没有按预期工作。我一直在阅读来自here的csh。
我不是csh的专家,我上面写的是我的第一个csh脚本。请让我知道我做错了什么。
答案 0 :(得分:2)
你也可以这样做
alias up 'cd `yes ".." | head -n\!* | tr "\n" "\/"`'
yes ".."
会无限期地重复字符串..
;调用别名时,head
会将其截断为作为参数传递的数字(!*
扩展为传递的参数;类似于$@
),tr
会将换行符转换为{ {1}}。
答案 1 :(得分:1)
您可以使用csh的repeat
功能
alias up 'cd `pwd``repeat \!^ echo -n /..`'
不需要循环(这很方便,因为tcsh中的while
构造看起来非常挑剔)