Как Вы создаете и выполняете сценарий удара, который называет исполняемый файл от более высокой папки?

Можно также позволить оболочке сделать повторения с a for цикл. Это - самый основной путь, который не полагается на внешние инструменты как parallel или xargs, и я нахожу самым легким понять:

for name in $(printf "s%02i " $(seq 1 50)); do
    mkdir $name
    cp test.txt $name
done

Существует миллион других способов записать это, например:

for name in $(seq -w 1 50); do
    mkdir s$name
    cp test.txt s$name
done

Если бы Вы хотите проверить то, что было бы выполнено прежде, чем сделать его, можно сделать что-то как предварительное ожидание команд с echo, который распечатает строку вместо того, чтобы выполнить его:

for name in $(seq -w 1 50); do
    echo mkdir s$name
    echo cp test.txt s$name
done

выводы:

mkdir s01
cp test.txt s01
mkdir s02
cp test.txt s02
mkdir s03
cp test.txt s03
# etc.
3
29.10.2013, 08:27
4 ответа

Можно попытаться запустить скрипт с pwd прежде, чем назвать исполняемый файл, чтобы видеть, изменяет ли Ваш сценарий каталог после выполнения первого исполняемого файла.

pwd
../filename {options} {parameters} &
pwd
../filename {options2} {parameters} &
pwd
../filename {options3} {parameters} &
pwd
../filename {options4} {parameters} &
1
27.01.2020, 21:28
  • 1
    Возможно, я просто делаю что-то ужасно неправильно. Включая pwd в моем .sh файле я добираюсь ": команда, не найденная 1: pwd", с изменением в номере строки для каждого pwd управляют... –  Teofrostus 31.10.2013, 00:01
  • 2
    можно ли отправить сценарий здесь? –  VDR 31.10.2013, 09:14
  • 3
    Здесь это точно:../sim-outorder-fetch:ifqsize 1-issue:width 1-decode:width 1-commit:width 1 cc1.alpha-O 1stmt.i> 1inst-cc1.std 2> 1inst-cc1.stat и../sim-outorder-fetch:ifqsize 2-issue:width 2-decode:width 2-commit:width 2 cc1.alpha-O 1stmt.i> 2inst-cc1.std 2> 2inst-cc1.stat и../sim-outorder-fetch:ifqsize 4-issue:width 4-decode:width 4-commit:width 4 cc1.alpha-O 1stmt.i> 4inst-cc1.std 2> 4inst-cc1.stat и../sim-outorder-fetch:ifqsize 8-issue:width 8-decode:width 8-commit:width 8 cc1.alpha-O 1stmt.i> 8inst-cc1.std 2> 8inst-cc1.stat и –  Teofrostus 02.11.2013, 04:03
  • 4
    По некоторым причинам я не могу составить шоу строк отдельно... Но каждый../находится на своей собственной строке. Существует в общей сложности 4 строки с различными параметрами для исполняемого файла, который я выполняю и различные имена выходного файла. Я знаю каждую из этих работ команд, как будто я ввожу точную команду в консоль, я могу заставить это работать. Однако, если я запускаю скрипт (который я назвал Part1-1.sh), я получаю 3 "команды, не найденные" ошибки, сопровождаемые номерами строки 1: 2: и 3: –  Teofrostus 02.11.2013, 04:06
  • 5
    Необходимо удостовериться $PATH определяется перед Вашими выполнениями сценария. Можно проверить это путем выполнения /usr/bin/env использование это - полный путь в начале Вашего сценария. –  Will 11.05.2015, 05:00

Это походит на то, что необходимо знать, текущее местоположение сценария, независимо от того, как это звонило (или с полным путем, относительным путем, или через $PATH оболочки). После того как Вы знаете, что, можно затем сослаться другой исполняемый файл через путь относительно текущего местоположения.

Можно получить текущее местоположение под управлением сценария со следующим:

MYLOC=`dirname $0`

... и затем выполненный Ваш относительный исполняемый файл с помощью этой переменной:

$MYLOC/../filename

Это работает независимо от текущего рабочего каталога (например, $pwd) и даже работает, если Ваш сценарий найден и выполнен через $PATH оболочки... с тех пор, если сценарий выполняется через полный или относительный путь, 0$ имеет присваиваемое значение... или, если сценарий, выполняются путем поиска $PATH оболочки, то 0$ содержат абсолютный, полный путь в файл сценария.

0
27.01.2020, 21:28
  • 1
    Так, я теперь также попытался просто запустить скрипт только с первой командой '../имя файла {опции} {параметры} и Даже в этом случае, я добираюсь ": управляйте не found1": включая следующее наверху моего файла оболочки: MYLOC = 'dirname' $MYLOC/../имя файла за 0$ {опции} {параметры} я заканчиваю со следующей ошибкой - "./Part1-1.sh: строка 1: MYLOC: команда, не найденная: управляйте не found2": возможно, я неправильно понимаю то, что Вы имеете в виду? –  Teofrostus 30.10.2013, 23:58
  • 2
    Plese: dirname $0 находится в одинарных левых кавычках не одинарные кавычки. Использование символа одинарной левой кавычки (несмещенная тильда на большинстве клавиатур) заставит содержание быть замененным выводом команды включения. Я верю этому is the same as$ (команда), но синтаксис обратной галочки является значительно старше (и более общим) –  Tim Peoples 01.11.2013, 01:20

Вы, вероятно, изменяете текущий рабочий каталог, когда Вы используете ../filename. Так, лучше должен использовать в Вашем script_file.sh следующие строки:

current_directory=$(pwd)
../filename {options} {parameters} &
cd $current_directory
../filename {options2} {parameters} &
cd $current_directory
../filename {options3} {parameters} &
cd $current_directory
../filename {options4} {parameters} &

Это даст Вам наверняка ожидаемый результат.

-1
27.01.2020, 21:28
  • 1
    Нет, это не работает как этот. Даже если ../filename каталог изменений, это - подпроцесс, таким образом, родитель не чувствует различия. Linux –  orion 17.06.2015, 11:28

преобразование .crt в .pem с помощью

openssl x509 -in ${CLIENT}.crt -out ${CLIENT}.pem -outform pem

может потребоваться указать ключ

openssl x509 -in ${CLIENT}.crt -inkey ${CLIENT}.key -passin pass:foobarbaz  -out ${CLIENT}.pem -outform pem

(предполагая, что foobarbaz - это пароль)

-121--102927-

Я не понимаю, сейчас это работает.

Возможно, перезагрузка потребовалась после установки библиотеки python...

-121--244792-

Вы используете symlinks?

Для написания надежных сценариев не следует использовать «dirname $0». Он относится к команде $0, которая связана с вызывающей командой. При навигации по каталогам используйте вместо этого «readlink -f $0».

basedir="$(dirname $(readlink -f $0))"
$basedir/../filename {options} {parameters} &

readlink -f даст вам абсолютный путь к вашему сценарию, независимо от ссылки, рабочего каталога и т.д.

2
27.01.2020, 21:28

Теги

Похожие вопросы