小编cok*_*ude的帖子

Bash if 语句 [: missing `]' 错误

我在使用 bash 时遇到问题。我试图将命令放入if语句中,然后将其与字符串进行比较。

这完美地工作。

echo $(ipcs | grep Shared | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)

当我把它放在if声明中时,我遇到了一些问题。

$ if [ "$(ipcs | grep Shared | awk '{print $2}')" -eq "Shared"]; then
  echo expression evaluated as true;
else
  echo expression evaluated as false;
fi
bash: [: missing `]'
expression evaluated as false

$ if [ "$(ipcs | grep Shared | awk '{print $2}')" = "Shared"]; then
  echo expression evaluated as true;
else
  echo expression evaluated as false;
fi
bash: [: …
Run Code Online (Sandbox Code Playgroud)

bash shell-script test

59
推荐指数
1
解决办法
16万
查看次数

仅包含 5 或 6 个数字的行的 Grep

你将如何 grep 只包含 5 或 6 个数字的行?像这样的东西。

case 1(有前导空格)

           10      2       12      1       13
Run Code Online (Sandbox Code Playgroud)

情况 2(无前导空格)

   1       2       3       4       5        6
Run Code Online (Sandbox Code Playgroud)

我认为这样的事情会奏效。

grep -E '[0-9]{5}'
Run Code Online (Sandbox Code Playgroud)

grep

5
推荐指数
2
解决办法
5万
查看次数

运行单个 for 循环而不是两个 for 循环的更好方法

这有效,但我这样做的方式有点愚蠢。有一个更好的方法吗?

for e in $(ipcs | awk '{print $2}'); do
    [[ "$e" = "Semaphore" ]] && break
    echo $e
    ipcrm shm $e
done

    echo $e outside for loop
for e in $(ipcs | awk '{print $2}'); do
    [[ "$e" = "Message" ]] && break
    echo $e
    ipcrm -s $e
done

echo
exit 0
Run Code Online (Sandbox Code Playgroud)

这就是我运行 ipcs 时的样子。

$ ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 262145     bob        600        393216     2          dest         
0x00000000 2523138    bob …
Run Code Online (Sandbox Code Playgroud)

bash shell-script

4
推荐指数
1
解决办法
604
查看次数

在没有 dos2unix 的旧服务器上将 windows 文件转换为 unix

我使用没有 dos2unix 的旧服务器,我想将 Windows 文件转换为 unix 文件。不幸的是,我不是管理员,所以我无法安装 dos2unix。该tr方法似乎是唯一有效的方法。

cp script _p4 && tr -d '\r' < _p4 > script && rm _p4
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来做到这一点?我真的很难记住这个或寻找这个。

conversion

4
推荐指数
2
解决办法
9778
查看次数

标签 统计

bash ×2

shell-script ×2

conversion ×1

grep ×1

test ×1