Предполагая, что и folder1
, и folder2
находятся в родительской
папке,
parent
folder1
folder2
Вы можете перефразировать цикл for следующим образом:
for file in ../folder2/*.csv
Как правило, вы всегда можете указать абсолютные пути к таким циклам:
for file in /home/username/parent/folder2/*.csv
do
split -l 50000 -d -a 4 "$file" "$file"
done
Вышеупомянутый цикл будет работать независимо от того, в каком каталоге вы находитесь.
Во-первых, я предполагаю, что отсутствие места перед =
в [ $trapaddress= "10.10.10.1" ]
является опечаткой. Если бы это было не так, вы бы немедленно получили сообщение об ошибке [
.
Во-вторых, у вас проблема в связи между операторами &&
и ||
. В оболочке они обрабатываются слева направо, поэтому ваше условие не делает то, что вы хотите. На самом деле это:
if cond1 && cond2 || cond3 && cond4; then...
больше похоже на это:
if ((cond1 && cond2) || cond3) && cond4; then...
Примечательно, что для этого требуется cond4 . Вы хотите либо
if (... &&...) || (... &&... ); then...
или
if [[... &&... ||... &&... ]]; then...
(В пределах [[.. ]]
они действительно имеют обычный относительный приоритет.)
Если вы хотите, вы можете объединить переменные, чтобы упростить сравнение, предполагая, что они никогда не содержат, например. косая черта:
if [[ "$traphost/$trapaddress" = "trapserver1/10.10.10.1" ||
"$traphost/$trapaddress" = "trapserver2/10.10.10.2" ]]; then...
Обратите внимание, что вы хотите заключать переменные в кавычки, чтобы избежать разделения слов, см. Когда необходимо двойное -цитирование?