2015-10-21 27 views
0

我需要創建一個腳本,它允許傳遞命令行參數並檢查它是否存在於運行腳本的目錄中的目錄中。如果它列出內容以及是否不打印錯誤消息。 所以在命令行我應該鍵入./check.sh測試(現有目錄) 和腳本應該運行。現在我不明白如何使用應該是$ 1的測試。在腳本中,我想花1美元,並根據現有目錄進行檢查。但是如果我這樣做:我學習bash,與命令行參數混淆

#!/bin/bash 
DIR=$1 
cd DIR 
ls 

這是行不通的,因爲DIR不會在參數取(在這種情況下測試) 我知道我需要使用if-else塊,但我不明白如何獲得我需要的信息。請有人幫我解決這個問題。

+0

您忘了'$'試試'cd $ DIR' –

+1

您需要使用$ DIR,您可以使用'test(1)'實際測試目錄是否存在。就目前來看,如果DIR不存在,你的'ls'將在當前目錄中運行。你也可以將它縮短爲'cd $ DIR && ls'。 –

+0

其實你不必cd到$ DIR。你可以簡單地做'ls $ DIR' –

回答

0

我想你想要的東西,像

#!/bin/bash 
DIR="$1" 
#test if $DIR is a directory. 
if [ -d "$DIR" ]; then 
    cd "$DIR" 
    ls 
fi 

或者,你也可以使用$1整個(它比$ DIR短,我寧願用env搜索bash - 它並不總是/bin/bash )。

#!/usr/bin/env bash 
if [ -d "$1" ]; then 
    cd "$1" 
    ls 
fi 
+1

來詳細闡述@ ElliottFrisch的答案。查看http://tldp.org/LDP/abs/html/fto.html關於文件測試運營商的bash。以及http://tldp.org/LDP/Bash-Beginners-Guide/html/chap_07.html以獲得對bash中條件邏輯的理解 – ptierno

+0

非常感謝您的幫助! –

+0

@anon_guy如果「Elliot Frisch」爲您提供了您正在尋找的答案,那麼也許您應該將他的答案標記爲您對您問題的接受答案 – ptierno