Existem vários problemas com o seu script. O primeiro e mais importante é que você está usando csh . Não . Entre suas muitas falhas como linguagem de script, csh não suporta $() , você precisa de backtics. Você também precisa de cat para concatenar arquivos, você não pode simplesmente executar o arquivo como se fosse um programa. Não, se você quiser imprimir o seu conteúdo, de qualquer maneira. Você também tem a sintaxe if errada. Finalmente, você não precisa de else if . Como você só tem duas ações para executar, qual é o objetivo de verificar três condições diferentes? Todas as condições, exceto uma, farão o mesmo, portanto, use apenas if ... else .
Uma versão funcional do seu script em csh seria:
#!/home/terdon/bsd-csh -f
echo ENTER a file name
set fl1 = $<
echo ENTER a second file name
set fl2 = $<
set var1 = 'wc -c < "$fl1"'
set var2 = 'wc -c < "$fl2"'
echo "V: $var1 $var2"
if ( ! -e "$fl1" && ! -e "$fl2" ) then
echo File does not exist
echo -n Please enter a vaild file name
else if ( "$var1" > "$var2" ) then
cat "$fl2" >> "$fl1"
else
cat "$fl1" >> "$fl2"
endif
Aqui está um script com a mesma funcionalidade no bash, apenas para ilustrar o que está faltando:
#!/bin/bash
read -p "ENTER a file name:" fl1
read -p "ENTER a second file name:" fl2
[[ -e "$fl1" && -e "$fl2" ]] ||
echo "File does not exist, please enter a vaild file name" && exit;
if [[ $(wc -c "$fl1") -lt $(wc -c "$fl2") ]]
then
cat "$fl2" >> "$fl1"
else
cat "$fl1" >> "$fl2"
fi