Невозможно установить переменную в качестве сценария для C-shell

#linux #bash #cygwin #csh #tcsh

#linux #bash #cygwin #csh #tcsh

Вопрос:

Это очень просто. Я пытаюсь установить свою переменную во втором скрипте. Я пробовал несколько способов, но не работает. Отсюда и весь закомментированный раздел. Первый скрипт, который вы запускаете IE:unit3.2a.sh 3 5 это вернет 8. Второй скрипт должен прочитать результат как 8. Я использую cygwin.

unit3.2a.sh «‘

 #!/bin/csh

set a = 0
set b = 0
set c = 0

@ a = $1
@ b = $2

@ c = $a   $b

echo $c
  

»’

unit3.sh «‘

 #!/bin/csh

a=$(~./unit3.2a.sh)
#below is all that don't work!
#instructors: a =~./unit3.2a.sh 2 200
#./unit3.2a.sh "2" "200"
#~./unit3.2a.sh 2 200
#=$(./unit3.2a.sh 2 200)
#=$(./unit3.2a.sh) (2 200)
#$(./unit3.2a.sh 2 200)
#$(/home/Admin/unit3.2a.sh)
#$(/home/Admin/unit3.2a.sh 2 200)
#added echo $a to see if I wasnt seeing  anything the echo text works fine but a variable does not read?
#set a='./unit3.2a.sh 2 200'
##set a=$(cat ./unit3.2a.sh 2 200)
#$ ./unit3.sh
#cat: 2: No such file or directory
#cat: 200: No such file or directory
#set a=$(~./unit3.2a.sh 2 200)
#a=$(~./unit3.2a.sh 2 200)



echo $a

echo "The result is: $a"

echo "Storing the results.............."

echo "Storing the result: $a" >> unit3.txt

echo "The script is over"
  

»’

Комментарии:

1. Я не совсем понимаю ваш вариант использования здесь, но знаете ли вы о csh setenv vs set и их различиях? setenv это как export в других оболочках. Это делает переменные видимыми для дочерних процессов родительского csh . Удачи.

Ответ №1:

пожалуйста, обратите внимание, что:

~./unit3.2a.sh ссылается на конкретное местоположение файла, в то время как ./unit3.2a.sh ссылается на файл в текущем каталоге

форма $( command ) зависит от bash, не работает в C-shell, см.
https://www.grymoire.com/Unix/Csh.html#uh-21

 #!/bin/csh

set a = `./unit3.2a.sh 2 2`

echo $a
echo "The result is: $a"
echo "Storing the results.............."
echo "Storing the result: $a" >> unit3.txt
echo "The script is over"
  

это приводит:

 $ ./unit3.sh
4
The result is: 4
Storing the results..............
The script is over
  

Комментарии:

1. Спасибо за статью, я разбираюсь в python, java и c. Но Linux выбивает мой двухкомпонентный пакет. Это просто достаточно отличается от командной строки, как будто я знаю французский, поэтому я понимаю много испанского, когда читаю, но не слышу подсказки. 🙂 Спасибо.