2016-01-29 2 views
-1

Как предотвратить потерю косой черты моей программы. Моя первая мысль - удалить косую черту, но если есть лучший метод, пожалуйста, дайте мне знать. Я не знаю, будет ли пользователь проходить в «dir» или «dir /». Это в ш.shell script sh удаление косой черты (/) из аргумента

$1="directory/" 

for i in "$1"/* 
do 
    some code 
done 
+0

'/' - это косая черта, а не обратная косая черта. –

+2

... сказал, что это значит «сбой вашей программы»? Удвоение разделителей пути должно быть безвредным. –

+0

Назначение '$ 1' просто для иллюстрации, чтобы указать, что первый позиционный параметр имеет это значение? (Потому что вы не можете назначить '$ 1' или' 1'.) –

ответ

3

Вы можете удалить его, если присутствует с parameter expansion:

for i in "${1%/}"/* 

, которая расширяется к $1 с косой черты удалены с конца.

0

Я думаю, что у вас есть проблема, как @Benjamin сказал: Не назначайте 1 доллар. Давайте проверим вход и назначим dir.

# 
if [ $# -eq 0 ]; then 
    echo "Usage: $0 directory [other parameters]" 
    exit 1 
fi 

if [ -d "$1"]; then 
    dir="${1%/}" 
else 
    echo "$1 is not a valid directory" 
    exit 1 
fi 

for file in "$dir"/* 
do 
    some code with "${file}" 
done 
Смежные вопросы