Eu descobri a resposta, em suma, você precisa usar os parâmetros para dar suas variáveis. O parâmetro %b
entrega o nome do arquivo como um argumento de linha de comando que pode ser acessado através do "$1"
para o primeiro argumento. no caso de %B
, você terá todos os arquivos como argumentos separados, então você precisará de "$1"
"$2"
etc ...
Você também pode usar $PWD
para obter o diretório de trabalho atual. CONTUDO, há algumas coisas importantes a serem notadas sobre isso, já que o diretório de trabalho atual nem sempre é o que você imagina. Quando você tiver selecionado um arquivo na pasta, /home/admin/myStuff/test.txt
o diretório de trabalho do script será /home/admin/myStuff
. Portanto, você pode usar "$PWD/$1"
para obter o diretório de trabalho atual + /
+ o arquivo selecionado. O código é o seguinte
#!/bin/bash
#Author: Thomas Migus, created on March 20th 2018
#this is a script that runs the client that will send the file.
FILE="$PWD/$1"
IP=$(zenity --entry --text "What is the IP you want?" --entry-text "127.0.0.1")
PORT=$(zenity --entry --text "What is the IP you want?" --entry-text "3000")
/home/admin/fileSending/clientSend $IP $PORT $FILE
zenity --info --text "File sent"
Quando você não selecionou uma pasta, o diretor de trabalho é alterado. Vamos dizer que você clique com o botão direito no espaço vazio dentro de /home/admin/myStuff
o diretório de trabalho será /home/admin
NOT /home/admin/myStuff
Para selecionar o diretório de trabalho, você pode usar %b
para saber em qual diretório você está. O código é o seguinte:
#!/bin/bash
#Author: Thomas Migus, created on March 20th 2018
# This is a script which runs the server
OUTPUT="$PWD/$1/"
PORT=$(zenity --entry --text "What is the port number?" --entry-text "3000")
/home/admin/fileSending/serverRecieve $PORT $OUTPUT
zenity --info --text "File recieved"
você mesmo pode testá-lo com este pequeno script
#!/bin/bash
zenity --info --text "$1"
zenity --info --text "$PWD"