2015-01-30 3 views
-1

У меня есть сценарий, как показано ниже.Разница между sh и sh -c в unix

demo.sh:

name=$1  
age=$2 
echo $name 
echo $age 

, когда я выполняю скрипт как

sh demo.sh ARUN 24 

Выход есть:

ARUN 
24 

Но, когда я выполнить сценарий, как

sh -c demo.sh ARUN 24 

Выход ничего.

Я знаю, что если я использую sh -c, то аргументы будут назначены начиная с $0. Но только имя файла присваивается $0. Как я могу назначить более одного параметра при использовании sh -c? Пожалуйста, объясните мне, как это работает.

ответ

0

Используйте этот синтаксис вместо:

sh -c "demo.sh ARUN 24" 

В вашем случае эти два аргумента, где передаются команде sh, не demo.sh сценарий. Поместите их в кавычки, чтобы передать их в скрипт sh.

Обратите внимание, что самым простым способом было бы сделать исполняемый файл сценария и добавить к нему строку hashbang (#!). Сценарии будет выглядеть следующим образом:

#!/bin/sh 

name=$1 
age=$2 
echo $name 
echo $age 

Сделать исполняемым:

chmod +x demo.sh 

Затем запустите его следующим образом (без переводчика sh, переводчик теперь собрана из #! линии):

./demo.sh ARUN 24 
+0

Спасибо. Оно работает. – Arunselvan

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