2015-10-21 3 views
0

Мне нужно создать скрипт, который позволяет передавать аргумент командной строки и проверять, существует ли он в качестве каталога в каталоге im, в котором запущен скрипт. Если это список содержимое и если оно не выводит сообщение об ошибке. Итак, в командной строке я должен ввести ./check.sh test (существующий каталог) и запустить скрипт. Теперь я не понимаю, как использовать тест, который должен составлять $ 1. В сценарии я хочу взять $ 1 и проверить его на существующие каталоги. Однако, если я делаю что-то вроде:Im learning bash, смущенный аргументами командной строки

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

это не работает, потому что DIR не принимает аргумент (в данном случае тест) Я знаю, что нужно использовать, если-нибудь блок, но я не понимаю, как получить информацию, которую мне нужно для начала. Пожалуйста, помогите мне понять это.

+0

Вы забыли '$' 'Попробуйте CD $ DIR' –

+1

Вы должны использовать $ DIR, и вы можете использовать' тест (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

Смежные вопросы