调用sed后,在if-then语句中Shell变量意外为空

时间:2016-02-16 05:43:38

标签: shell sed

我有一个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意外为空。任何人都可以帮我解决这个问题吗?

1 个答案:

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

,而不是使用外部工具
_

具有相同的结果。

请注意,不建议使用大写变量名称,因为它们更可能与现有的保留名称冲突。