0

我是 bash 的新手,我确实花了几个小时试图弄清楚这一点,但我被困住了。

我正在编写一个脚本,它将在 pyLoad 中完成下载后自动执行。我需要检查包名的第一个单词是否为“Public”。

在尝试调试时,到目前为止我已经得到了这个:

#!/bin/sh
PACKAGE="$1"
PATH="$2"

FIRST=$(echo $PACKAGE|awk '{print $1}')
echo "First word is: $FIRST"

通过sh download.sh "test package" ~/返回运行它

download.sh: 5: download.sh: awk: not found

无论“测试包”是否在引号中,我都会得到相同的结果。

我的目标是达到这样的目的:

if [ $FIRST == "public"  ]
then
    # Move to public folder
else
    # Do nothing
fi

任何帮助,将不胜感激。

操作系统:Ubuntu 12.04 x64

路径 =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

4

2 回答 2

2

awk:未找到

因为您重新定义了 PATH 变量。尝试为您的内部 PATH 变量使用另一个名称。

于 2013-09-12T18:03:02.443 回答
0

您可以有其他选择:

[[ $PACKAGE =~ ^[[:space:]]*([^[:space:]]+) ]]
FIRST=${BASH_REMATCH[1]}
echo "First word is: $FIRST"

或者

FIRST=${PACKAGE%%[[:space:]]*}
echo "First word is: $FIRST"
于 2013-09-12T17:57:04.223 回答