Команда cp -P
не подходит для ваших нужд. Вы используете заглавную букву аргумента -P
, которая используется, чтобы никогда не переходить по символическим ссылкам.
Вы хотите использовать строчные буквы для сохранения временных меток: cp -p
Как описано в разделе комментариев вопроса, использование правильных gid и uid решило проблему:
sudo mount -t cifs //mynas/folder /home/mnt/nas/ -o user=username -o gid=1000,uid=1000
По прямой:
arr1=(1 -2 3 -2 2 -4)
arr2=(-2 -3 4 5 2 -5)
i=0
while [[ "$i" -lt "${#arr1[@]}" ]]; do
a=$(( ${arr1[$i]} * ${arr2[$i]} ))
if [[ "$a" -lt 0 ]]; then
echo 2
else
if [[ "${arr1[$i]}" -gt 0 ]]; then
echo 1
else
echo 0
fi
fi
: "$((i = i + 1))"
done | paste -sd ' ' -
Если вы знакомы с C, C++ или Java, то этот вариант bash
for
-loop тоже покажется вам знакомым. bash
выполняет арифметическую оценку с помощью (( ... ))
, поэтому мы будем использовать его при сравнении значений:
array1=( 1 -2 3 -2 2 -4 )
array2=( -2 -3 4 5 2 -5 )
array3=( )
for (( i=0; i < ${#array1[@]}; ++i )); do
if (( array1[i] < 0 && array2[i] < 0 )); then
array3[$i]=0
elif (( array1[i] > 0 && array2[i] > 0 )); then
array3[$i]=1
else
array3[$i]=2
fi
done
echo "${array3[@]}"
Это также хорошо работает с оболочкой ksh93
, от которой bash
получил многие свои возможности.