Bash

如何在 bash 中觀看 for 循環?

  • May 7, 2021

是否可以在命令中使用for-loop watch

我不確定如何用我嘗試過的方法來解決這個錯誤:

$ for i in 1 2 3; do echo $i; done
1
2
3
$ watch -n 10 for i in 1 2 3; do echo $i; done
-bash: syntax error near unexpected token `do'
$ watch for i in 1 2 3; do echo $i; done
-bash: syntax error near unexpected token `do'
$

watch命令參數是一個與 一起執行的腳本sh -c

如果命令參數只是一個由空格分隔的標記列表(例如watch ls -l),它會將它們全部連接起來並執行它們。但是不帶引號的 shell 元字元由您執行的 shell 使用,watch並且永遠不會被watch.

這意味著像; & | < >etc 之類的元字元需要轉義或引用,以防止您執行的 shellwatch將這些字元視為例如標記watch命令結束、在後台執行 watch 命令或管道輸出的指令進入watch另一個程序(而不是在監視腳本中執行管道)。

通常的引用規則適用 - 單引號防止變數插值,否則雙引號。 man watch最後有一個範例部分顯示了這一點。

例如:

watch -n 10 'for i in 1 2 3; do echo $i; done'

或者

watch -n 10 'grep something /var/log/kern.log | tail'

注意:如果watch-x想在沒有sh -c. 例如watch -x awk -f script.awk

引用自:https://unix.stackexchange.com/questions/648530