我有一个shell脚本:
TOPDIR=`pwd`
FOLDER=$($TOPDIR | sed 's/\//\_/g')
if [[ condition ]];then
source ~/[$FOLDER]-build/build-env.sh
fi
TOPDIR
此处为/home/uname/project
,因此变量FOLDER
应为_home_uname_project
,因为调用sed
来替换/
_
。
但是在执行时出错了,终端告诉/home/uname/[]-build/build-env.sh: No such file or directory
,我猜,这意味着在if-then语句中FOLDER
意外为空。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
如果你看一下
的输出get_picks = PickViewset.as_view({
'get': 'update_picks',
'post': 'update_picks',
})
你会意识到它是空的;它尝试执行等于$TOPDIR | sed 's/\//\_/g'
内容的命令并将其输出传递给sed,但首先没有输出。
你可以做到
$TOPDIR
代替(无需转义pwd | sed 's\//_/g'
),这将起作用。
或者,您可以使用parameter expansion
,而不是使用外部工具_
具有相同的结果。
请注意,不建议使用大写变量名称,因为它们更可能与现有的保留名称冲突。