Вопросы с тегом «shell-script»

Вопросы о сценариях оболочки, исполняемых файлах, которые интерпретируются оболочкой (bash, zsh и т. Д.).


1
В Bash, если [-z “$ 1”] и [[$ 1 ”=“ ”] одно и то же?
В скриптах оболочки Bash, в чем разница (если таковая имеется) между следующими двумя операторами? 1.) if [ -z "$1" ] 2.) if [ "$1" = "" ] Я обнаружил, что пишу второй в некоторых сценариях, но потом я прочитал здесь, что использование -zдостигает того же. Если есть проблемы с использованием …

1
Почему «-» в «#! / bin / sh - ”Шебанг?
#! / bin / sh - Является (или, по крайней мере, было) часто рекомендуемым Шебангом для интерпретации сценария /bin/sh. Почему не просто #! /bin/shили #!/bin/sh? Для чего это -?

7
Преобразование подчеркивания в PascalCase, т.е. UpperCamelCase
Если у меня есть строка, которая выглядит так: "this_is_the_string" Внутри bash-скрипта я хотел бы преобразовать его в PascalCase, т.е. UpperCamelCase, чтобы он выглядел так: "ThisIsTheString" Я обнаружил, что преобразование в lowerCamelCase может быть сделано следующим образом: "this_is_the_string" | sed -r 's/([a-z]+)_([a-z])([a-z]+)/\1\U\2\L\3/' К сожалению, я недостаточно знаком с регулярными выражениями, чтобы …


9
для против найти в Баш
При циклическом просмотре файлов существует два способа: используйте for-loop: for f in *; do echo "$f" done использовать find: find * -prune | while read f; do echo "$f" done Предполагая, что эти два цикла найдут один и тот же список файлов, каковы различия между этими двумя параметрами в производительности …

2
В чем разница между одинарным и двойным знаком равенства (=) в сравнениях оболочки?
Прочитайте, что для сравнения строк внутри ifмы должны использовать двойные квадратные скобки. В некоторых книгах говорится, что сравнение может быть сделано =. Но это работает с ==тоже. #!/bin/bash a="hello" b="world" if [[ $a == $b ]];then echo "equal" fi Есть ли разница между =и ==в сравнении?

5
Удалить диапазон линий над шаблоном с помощью sed (или awk)
У меня есть следующий код, который удалит строки с шаблоном bananaи 2 строки после него: sed '/banana/I,+2 d' file Все идет нормально! Но мне нужно, чтобы он убрал 2 строки раньше banana , но я не могу получить его со знаком «минус» или чем-то еще (похоже на то, что grep …

3
Что означает «пока:;»?
Я знаю, что такое whileпетля. Тем не менее, я видел только это работает с: while [condition] while ![condition] while TRUE (infinite loop) Где утверждение whileдолжно быть либо TRUEили FALSE. Существует встроенная команда оболочки с именем :. Это описывается как фиктивная команда, которая ничего не делает, но я не знаю, является …

4
Являются ли оператор if else логическим и && или || и где я должен предпочесть один другому?
Я узнаю о структурах принятия решений, и я столкнулся с этими кодами: if [ -f ./myfile ] then cat ./myfile else cat /home/user/myfile fi [ -f ./myfile ] && cat ./myfile || cat /home/user/myfile Они оба ведут себя одинаково. Есть ли какие-то преимущества в использовании одного способа из другого?

2
Правильное поведение ловушек EXIT и ERR при использовании `set -eu`
Я наблюдаю странное поведение при использовании set -e( errexit), set -u( nounset) вместе с ловушками ERR и EXIT. Они кажутся взаимосвязанными, поэтому разумно их объединить. 1) set -uне запускает ERR-ловушки Код: #!/bin/bash trap 'echo "ERR (rc: $?)"' ERR set -u echo ${UNSET_VAR} Ожидается: вызов ERR, RC! = 0 Фактически: ERR-ловушка …

2
sudo: невозможно выполнить ./script.sh: нет такого файла или каталога
Я в тупике. У меня есть скрипт в моем /homeкаталоге, который является исполняемым: [user@server ~]$ ll total 4 -rwx------ 1 user user 2608 Jul 15 18:23 qa.sh Однако, когда я пытаюсь запустить его с sudoэтим, он говорит, что не может найти его: [user@server ~]$ sudo ./qa.sh [sudo] password for user: …



4
Тестирование, если переменная пуста в сценарии оболочки
Я видел следующую технику, которую много раз использовали на разных оболочках, чтобы проверить, является ли переменная пустой: if [ "x$1" = "x" ]; then # Variable is empty fi Есть ли какие-либо преимущества в использовании этого по сравнению с более каноническим if [ -z "$1" ]? Может ли это быть …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.