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