I have the following Script, the Interpreter is set to Shell:
#!/bin/bash
RESULT=$(<cmd> | tee /dev/tty)
IMAGE_ID=$(python -c "<do sth. with $RESULT>")
I would like to store the result of cmd in RESULT and "print" it on screen (make it appear in the logs), but I am getting: tee: /dev/tty: No such device or address.
Any ideas how to achieve this?
I could just printf/echo $RESULT after the cmd finishes, but I would like to have "live" output.
Interesting question - I'm not a shell scripting expert, but the following approach based on I/O Redirection to additional file descriptors seems to work well:
#!/bin/bash
exec 5>&1
RESULT=$(<cmd> | tee /dev/fd/5)
IMAGE_ID=$(python -c "<do sth. with $RESULT>")
Here's a test command to demonstrate it with Bamboo's Script task:
#!/bin/bash
exec 5>&1
RESULT=$(for i in `seq 1 8`; do ls -l && sleep 2; done | tee /dev/fd/5)
Hi Tobias,
Not sure about the python stuff here, but if you want to store the command output in a variable using shell then:
var=`pwd`
echo $var
This way your variable "var1" will have the output of the command 'pwd' and you can later user this variable.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Robhit,
Thanks for your reply. Please read my whole post again, I am looking for "live" output. Using the var solution will wait until the command finishes, before printing anything.
Thanks.
I just prefer python over awk to process strings. It doesn't matter for the question.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Ok got your requirement, sorry I missed the tty part
So, the error which you are getting is very weird because I tried using the tty in my bamboo but not hitting the same error but printing output to the logs is not working when using "tty /dev/tty" (I will look into this more to debug)
however, as a workaround, I used something like below to redirect the tty output to a temp file and then cat the file. I know it will create an unnecessary file but can't help it as of now need to debug more.
RESULT=$(echo "robhit saxena" | /usr/bin/tee test-file.txt)
cat test-file.txt
new_var=$(echo $RESULT | awk '{print $1}')
echo "new var is: "$new_var
Screenshots for the reference:
--------
--------------
------
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.