2016-03-05 3 views
0
#!/bin/bash 

function main_menu() 
{ 
echo Simple Linux Utility 
echo 0) Repeat last command 
read -p "Choose your option : " input 

case $input in 
    0) 
     !!;; 
    *) 
     exit;; 
esac 

} 
main_menu 
exit 0 

Возникает вопрос: «Просто повторить последнюю команду Использовать переменную для запоминания последнего набранного номера.» и я не могу писать какие-либо данные на внешние файлыКак переделать последнюю команду в сценарии оболочки?

Но я не» t знать, как повторить последнюю команду в сценарии оболочки Я не могу использовать !! ! -1 в сценарии оболочки, он будет отображаться как ошибка

+0

Я не вижу сценария ... – rbaleksandar

+0

Я думаю, что [это] (http://unix.stackexchange.com/questions/147563/how-do-i-repeat-the-last-command-without- используя клавиши-стрелки) могут помочь вам. – ganchito55

ответ

1

Я бы предложил такое небольшое решение. В функции оболочки я добавил цикл, поэтому вы можете выбрать последнюю выполненную команду.

function main_menu() 
{ 
    echo Simple Linux Utility 
    echo 0: Repeat last command 

    while [ true ] 
    do 
     read -p "Choose your option : " input 

     case $input in 
      "0") ;; 
      "1") cmd="ls -las" ;; 
      "2") cmd="uname -a" ;; 
      *) exit ;; 
     esac 

     $cmd 
    done 
} 

main_menu 
exit 0 
+0

Возможно, вы захотите добавить опцию 'read -p 'Custom command:" cmd'. Я думаю, вам понравится встроенный 'select'. –

+0

Я бы порекомендовал 'while true; do' или 'while:; do'. 'while [true]; do' работает, но также делает 'while [false]; do', что является противоречивым, если вы считаете, что '[true]' как-то оценивает логическое значение. Не подражайте другим языкам, когда основная семантика полностью различна. – chepner

Смежные вопросы