在我的shell腳本的一個條件,我看到如何找到在選擇,如果外殼
if [[ ! -d directory1 || ! -L directory ]] ; then
是什麼-d
和-L
選項的意思是在這裏嗎?我在哪裏可以找到有關在if
條件下使用的選項的信息?
在我的shell腳本的一個條件,我看到如何找到在選擇,如果外殼
if [[ ! -d directory1 || ! -L directory ]] ; then
是什麼-d
和-L
選項的意思是在這裏嗎?我在哪裏可以找到有關在if
條件下使用的選項的信息?
-d
檢查給定的目錄是否存在。 -L
測試符號鏈接。
File test operators來自Advanced Bash-Scripting Guide解釋了各種選項。這裏是man page for bash這也可以通過在終端中輸入man bash
找到。
bash
對help
命令有內置的幫助。你可以很容易找到的選項,內置使用help
一個bash:
$ help [[
...
Expressions are composed of the same primaries used by the `test' builtin
...
$ help test
test: test [expr]
Evaluate conditional expression.
...
[the answer you want]
你可以做help test
這將顯示,多數由[[
命令接受的選項。
你也可以做help \[
這將顯示額外的信息。將顯示[
和[[
的幫助文本。
另請參閱「CONDITIONAL EXPRESSIONS」部分中的man bash
。
在Bourne shell中,[
和test
被鏈接到相同的可執行文件。因此,您可以在test聯機幫助頁中找到很多測試。
此:
if [[ ! -d directory1 || ! -L directory ]] ; then
是說如果directory1
不是一個目錄或如果directory
是不是鏈接。
我相信正確的語法應爲:
if [[ ! -d $directory1 ] || [ ! -L $directory ]] ; then
或
if [[ ! -d $directory1 -o ! -L $directory ]] ; then
是在你的OP正確行?
OP中的行是正確的;您可能會將bash語法與POSIX語法混淆。 Bash的[[''支持'||'和什麼; POSIX'''不。要在POSIX shell中做同樣的事情,你可以做'if [-d「$ {directory1}」] || ! [-h目錄]; then'。 '-o'語法由POSIX指定,但已過時(它會導致解析含糊不清)。 –
那些不是'if'語法;他們是'[[''語法。 ''[''與'if'是完全獨立的命令。 –