Вызов команды сохранен в переменной в zsh

Это хорошо работает:

#!/usr/bin/env bash
cmd="ls -l"
${cmd}

Но измените его для выполнения под оболочкой Z:

#!/usr/bin/env zsh
cmd="ls -l"
${cmd}

И я добираюсь:

./testing.sh:3: command not found: ls -l

Да ведь и как я заставляю его работать под zsh? Полный сценарий я продолжаю работать, требует zsh.

Та же проблема присутствует и для builtins и для внешних команд; например, замена ls -l с touch something выставки то же различие? Что произошло с этим? Спасибо!

1
задан 10 September 2018 в 05:15

1 ответ

У Вас есть две опции:

  1. Используйте массив вместо (рекомендуемой) строки

    cmd=(ls -l)
    $cmd
    
  2. Разделите строку на слова

    cmd='ls -l'
    $=cmd
    

Источник: Что разделяет слово? Почему это важно в программировании оболочки?

1
ответ дан 7 December 2019 в 15:14

Другие вопросы по тегам:

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