在Bash中填充变量时出现“没有该文件或目录”的错误

4
当我在bash脚本中运行以下命令时:

urlOfServer="$($repoURL_StripLastFour | awk -F'/' '{print $1}')"  

我遇到了以下错误:

192.168.1.12:7999/pcfpt/scriptsforexamples: No such file or directory

当脚本运行时,您可以看到repoURL_StripLastFour变量的值为192.168.1.12:7999/pcfpt/scriptsforexamples。该值是由脚本的其他元素在运行时自动创建的,因此我不能简单地将其作为文字传递。 需要使用什么特定语法来解决此错误,以便成功填充urlOfServer变量? 我已经尝试了许多移动引号和括号的变化。

使用Bash的参数扩展功能:urlOfServer="${repoURL_StripLastFour%%/*}" - Cyrus
如何在bash中删除路径的最后一部分? 如何在交互式shell中删除路径的一部分? 在Unix上删除路径的一部分。 如何在Linux脚本中从路径中删除末尾文件夹名称? 等等。 - jww
@jww,你留下了证据,证明你匆忙地砍掉了两个优秀答案和原帖。我不在乎你对我的问题进行投票,但请考虑不要如此严厉地对待回答者。 - CodeMed
2个回答

6

替换

$repoURL_StripLastFour

使用

echo "$repoURL_StripLastFour"

标准输入中提供awk的输入或替换

$repoURL_StripLastFour | awk -F'/' '{print $1}'

使用

awk -F'/' '{print $1}' <<< "$repoURL_StripLastFour"

使用此处字符串


1
感谢提到 <<< 是 Bashism。 - Gilles Quénot

0

不要使用 awk,只需使用参数扩展:

urlOfServer=${repoURL_StripLastFour%%/*}

%%/*会删除最长的匹配/*的后缀,即第一个/及其后面的所有内容,只留下第一个/之前的文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接