Как проанализировать опции в функции оболочки для навигации по нескольким проектам

Если имена файлов Y перечислены в a list файл, простая комбинация xargs и cat достаточно:

xargs cat <list >>concatenation_of_files

В случае Вы были осторожны, и Вы перечислили файлы один на строку (для предотвращения проблем с пробелами в именах файлов), затем просто добавьте a -d опция разделителя:

xargs -d'\n' cat <list >>concatenation_of_files

(Это принимает concatenation_of_files является первоначально несуществующим или пустым).

1
04.11.2012, 01:36
2 ответа
# is there a way to persist this through working enviornments besides this?
declare -x WORKING=`cat ~/.working`

Возможно, использование:

export WORKING=$(cat ~/.working)

Это должно добавить его к Вашей среде до перезагрузки.

Необходимо смочь сослаться на это позже при помощи

echo $WORKING

от подсказки.

1
27.01.2020, 23:39
  • 1
    хороший вызов! уверение я сделал это тот же путь спасибо –  MageProspero 03.11.2012, 17:55
  • 2
    Вы могли также добавить export WORKING=$HOME/.working в Ваш ~/.bashrc –  sparticvs 03.11.2012, 20:45

Для переменного постоянства Вам нужен механизм, это не оперативная память. Файлы являются хорошим выбором. Здесь я использую ярлык удара для $(cat filename)

declare -x WORKING=$(< ~/.working)

Вы не должны echo $(pwd), просто pwd

function pp { pwd > ~/.working; } 

"Близко объем", я принимаю Вас, означает, сохраняют локальные переменные локальными для функции: используйте local встроенный

function p {

  local OPTIND OPTARG
  local optstring=':fd'  # declare other options here: see "help getopts"
  local has_f=false has_d=false

  while getopts $optstring option; do
    case $option in
      f) has_f=true ;;
      d) has_d=true ;;
      ?) echo "invalid option: -$OPTARG"; return 1 ;;
    esac
  done
  shift $((OPTIND - 1))

  if $has_f ; then
    do something if -f

  elif $has_d ; then
    do something if -d
  fi

  # ... whatever else you have to do ...
}
1
27.01.2020, 23:39

Теги

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