我正在尝试打印我运行脚本的位置。
我尝试使用以下内容:
#! /bin/csh -f
var=$(pwd)
echo $var
我得到以下输出:
非法变量名称
答案 0 :(得分:3)
您使用的语法适用于bash,ksh,zsh和其他一些语法。
Csh有自己的语法来分配变量,并且不支持$( cmd ...)
形式的进程替换。
尝试
#! /bin/csh -f
set var = `pwd`
echo "$var"
请注意,要执行相当于export var=x
的操作,您需要执行
setenv var `pwd`
正如@Carpetsmoker提醒我们的那样,[t]csh
有2个包含此信息的环境变量,
$cwd
$PWD
所以在这种情况下没有理由招致使用命令替换的额外进程费用,所以你的脚本可以
#! /bin/csh -f
set var = $cwd
#OR
set var = $PWD
echo "$var"
最后,作为任何shell的良好编码实践,请注意我引用了"$var"
的引用。你应该养成引用你的变量的习惯,这将消除使用echo
去除任何多余空格的一整类问题,并保留带空格作为一个单元的路径或文件名。
IHTH