2014-10-13 5 views
1

У меня есть небольшой скрипт bash и есть переменная $ file и $ file2. Это файл, и я хочу получить первые 3 буквы этого имени файла. И я хочу, чтобы сравнить их:Bash - Получить первые 3 буквы имени файла

Я пробовал:

curfile=$(basename $file) 
curfilefirst3=${curfile:0:3} 
curfile2=$(basename $file2) 
curfile2first3=${curfile2:0:3} 

if ((curfilefirst3 == curfile2first3)); then 

.... 

Но я думаю, что есть проблемы, как я могу это исправить?

спасибо.

ответ

2

Вы недостающую $ для строк в сравнении, и вам нужно обернуть каждую строку " и все выражение с помощью []:

file="this.txt" 
file2="that.txt" 

curfile=$(basename $file) 
curfilefirst3=${curfile:0:3} 

curfile2=$(basename $file2) 
curfile2first3=${curfile2:0:3} 

echo $curfile2first3 
echo $curfilefirst3 

if [ "$curfile2first3" == "$curfilefirst3" ] 
then 
    echo "same!" 
else 
    echo "different!" 
fi 

Возможно, будет неплохо читать на bash conditionals

0

Substring Добывающая

$ {строка: позиция} Извлекает подстроку из $ строки в $ положении. Однако, если необходимо использовать [а не (как в:

if [ $curfilefirst3 == $curfile2first3 ]; then 

Исправленная:

#!/bin/bash 
file=abcdef 
file2=abc123456 
curfile=$(basename $file) 
curfilefirst3=${curfile:0:3} 
curfile2=$(basename $file2) 
curfile2first3=${curfile2:0:3} 
echo $curfilefirst3 
echo $curfile2first3 
if [ $curfilefirst3 = $curfile2first3 ]; then 
echo same 
else 
echo different 
fi 

Он печатает же Так, работает

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