簡體   English   中英

為什么在 bash scipt 中調用“ls”(和“grep”)取決於執行順序?

[英]why invoking "ls" (and "grep") in bash scipt depends on order of execution?

無法找到並理解為什么我會根據 bash 腳本中的執行順序收到錯誤。

我得到 2 arguments:

  1. 目錄的路徑。
  2. 一個字符串。
PATH="$1"
WORD="$2"
FILES="$(ls ./testRoot/*.c)"

輸出“ls:找不到命令”。

但,

FILES="$(ls ./testRoot/*.c)"
PATH="$1"
WORD="$2"

工作得很好。

我不明白為什么會這樣,想了解,我該如何處理。

ps 'grep'命令也是如此,但我猜這是同樣的原因。

謝謝。

PATH是一個特殊的 Linux 變量,它包含查找可執行二進制文件的所有目錄,通常是這樣的:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

當您在腳本中覆蓋此變量時,將不再找到可執行文件。

要解決這個問題,只需使用不同於PATH的變量名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM